package C035;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * ClassName: C03
 * Package: C035
 * Description:
 *
 * @Author BCXJ
 * @Create 2025/1/8 10:17
 * @Version 1.0
 * @Since 1.0
 */
public class C03 {
    public static void main(String[] args) {
        System.out.println(insert(-1));
        System.out.println(remove(-2));
        System.out.println(insert(-2));
        System.out.println(getRandom());

    }

    // value, index
    static HashMap<Integer, Integer> map = new HashMap<>();
    static List<Integer> arr = new ArrayList<>();

    //插入
    static boolean insert(int val) {
        if(map.containsKey(val)) {
            return false;
        }
        map.put(val, arr.size());
        arr.add(val);
        return true;
    }

    //删除元素
    static boolean remove(int val) {
        if(!map.containsKey(val)) {
            return false;
        }

        // 删除元素
        int index = map.get(val);
        // 最后一个元素的下标
        int lastIndex = arr.size() - 1;

        if(index == lastIndex) {
            map.remove(val);
            arr.remove(index);
            return true;
        }

        // 不是最后一个元素
        Integer endVal = arr.get(lastIndex);
        arr.set(index, endVal);
        map.put(endVal, index);
        map.remove(val);
        arr.remove(lastIndex);
        return true;
    }


    // 随机获取元素
    public static int getRandom() {
        // 随机获取下标
        int randomIndex = (int) (Math.random() * arr.size());
        return arr.get(randomIndex);
    }


}
